In a cloud computing environment, computing is delivered as a service rather than a product, whereby shared resources, software and information are provided to computers and other devices as a metered service over a network, such as the Internet. In such an environment, computation, software, data access and storage services are provided to users that do not require knowledge of the physical location and configuration of the system that delivers the services.
The functions of the cloud computing environment are performed by a data center, which includes various types of hardware components (e.g., storage controllers, network switches, physical compute machines) stored in racks. Sharing resources (e.g., data) stored in local repositories, such as compute machines on these racks, among other repositories can be cumbersome, especially when data can be modified at any of the repositories.
Currently, when resources are shared across repositories, the resource metadata is required to be bundled with the resource. Hence, the resource is required to be shared completely again when only the metadata is updated. Furthermore, if the metadata is stored alongside the resource as a second resource, then there is a chance that the two resources will become out of sync with each other, especially in a system where resources may be updated frequently, such as in a cloud computing environment.
Content versioning systems that attempt to keep track of the versions of the resources may be viewed as an alternative. However, such systems require a central repository and a significant amount of resources (e.g., physical and virtual resources, such as processing usage, memory usage, storage usage) for tracking the versions of resources being shared among the repositories.
Unfortunately, there is not currently a means for sharing resources among repositories utilizing few resources without the possibility of the resource (e.g., data) and resource metadata becoming out of sync.